Adapt import loading for Windows compatibility #6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This draft PR is a suggestion to fix an issue with appose in Windows. It is very similar to #5 and probably again not the ideal solution.
I am using this env:
Within this env I run:
micromamba run -p C:/Users/xxxx/.local/share/appose/cellpose3 C:/Users/xxxx/.local/share/appose/cellpose3/python.exe -c "import appose.python_worker; appose.python_worker.main()"and then interactively inputing this task to stdin
{"task":"c388f270-d6be-48df-9e02-e42b48cab98b","requestType":"EXECUTE","inputs":{},"script":"import numpy\n"}This results in a perfectly working process:
However, when I try to run this from a Java process similar to the code example (https://github.com/mastodon-sc/mastodon-deep-lineage/blob/appose/src/test/java/org/mastodon/mamut/appose/ApposeCellpose3Example.java), I only get this response and then the whole process is stuck in a dead lock:
The code added in this PR fixes this situation. It seems that loading imports like (e.g.) numpy can lead to deadlocks when being loaded in (multiple) threads.
I am again not sure, if the proposed fix is a good one however. Since the problem occurs only on Windows, one could think about adding if sys.platform == 'win32': or something like this to only perform the extra code on Windows. Also, one could think about making this optional and controlable from outside the python_worker by perhaps only performing the new code, if some global variable is set.
@ctrueden curious to learn your opinion about this.