Executes python scripts in different environments without writing temp files to disk, it can pass and receive any variable, multiprocessing can be executed from everywhere, not only at top-level
pip install callpyfile
# Create a file called callc1.py
import sys
from callpyfile import run_py_file # use this function to call the pyfile
from a_cv_imwrite_imread_plus import open_image_in_cv
# an example with OpenCV
pics = [
"https://github.com/hansalemaos/screenshots/raw/main/gimages/elephant.png",
"https://github.com/hansalemaos/screenshots/raw/main/gimages/dl.png",
"https://github.com/hansalemaos/screenshots/raw/main/gimages/house.png",
]
allpics = []
allpics_ = [open_image_in_cv(x) for x in pics]
for p in range(100):
allpics.extend(allpics_)
# Execute the py file
resu = run_py_file(
variables={
"imagelist": allpics
}, # The keys will be the global variables in the called pyfile
pyfile=r"C:\Users\Gamer\anaconda3\envs\dfdir\callc2.py", # The pyfile
activate_env_command="", # if you want to activate another environment, you can pass something like this (Anaconda): activate_env_command = ['activate.bat', 'otherenv']
pythonexe=sys.executable, # python.exe from your active environment
raise_exception=False, # if raise_exception is False, the function returns None if an Exception occurs during the Execution
)
# Create another file called callc2.py
import time
import cv2
from pathos.multiprocessing import ProcessingPool as Pool # By the way: good stuff
import numpy as np
from callpyfile import to_stdout # import the decorator
# Some CV stuff
def do_cv2_stuff(img):
kernel = np.ones((5, 5), np.float32) / 25
dst = cv2.filter2D(img, -1, kernel)
return dst
@to_stdout(kill_if_exception=True) # optional, kills the process using os._exit()
def exemu():
pool = Pool(nodes=5)
res = pool.amap(
do_cv2_stuff, imagelist
) # imagelist is not defined yet, but it doesn't matter because the decorator will create global variables from the dict you'have passed: {"imagelist": allpics},
while not res.ready():
time.sleep(0.001)
allb = res.get()
return allb
if __name__ == "__main__":
exemu()
# Run callc1.py
print(allpics[0][:1])
[[[255 255 255]
[255 255 255]
[255 255 255]
...
[ 54 53 50]
[ 57 55 52]
[ 59 57 54]]]
print(resu[0][:1])
[[[255 255 255]
[255 255 255]
[255 255 255]
...
[ 59 58 55]
[ 56 54 51]
[ 56 55 52]]]
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
callpyfile-0.10.tar.gz
(4.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file callpyfile-0.10.tar.gz.
File metadata
- Download URL: callpyfile-0.10.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/4.0.1 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c82dbe96b9ab9969d30c4d98c0cd4bc879e627ae5512eecc52911e4d032daeda
|
|
| MD5 |
1e6343c4238a6bc924724d50fcf34638
|
|
| BLAKE2b-256 |
3ea2cf15b733dd53dbabb420fadbdc9a23a9c7340183ee60f2a503c2fd10b841
|
File details
Details for the file callpyfile-0.10-py3-none-any.whl.
File metadata
- Download URL: callpyfile-0.10-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/4.0.1 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d610b9f8fc47f2651d2d3c2f015ee9b25c7139a5b98eaa9c3555bcae7e62e95
|
|
| MD5 |
4115c63c8351b0fefcd54b698b9c30b1
|
|
| BLAKE2b-256 |
776b4ba65179e6cbb9018278a7b0df7b11c365b2845b5bafa32b795c58d05748
|