python-3.x - 运行相同任务时的进程与线程[Python 3.9]
问题描述
我知道关于线程与处理有很多问题。我了解它们的一些基础知识以及使用其中任何一个的优缺点;有这个脚本时问题开始了:
from multiprocessing import Process
from threading import Thread
from time import sleep
LOGO = """
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@********************************************************@@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@**********************************************************@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
"""
def long_task():
print("Started long task inside subprocess")
sleep(10)
print("Ended long task inside subprocess")
def main():
global LOGO
print(LOGO)
# create subprocess
process = Process(target=long_task)
# start subprocess
process.start()
# join subprocess
process.join()
print("Finished main process")
if __name__ == "__main__":
main()
当我运行脚本时,发生了一些奇怪的事情;创建的进程没有打印想要打印的所有 2 条消息,而是等待sleep()
函数给出的指定时间;还不明白为什么会发生这种情况,并且在使用Thread()
(来自threading
模块)时它按预期工作;打印 2 条给定的消息
pyinstaller
当我使用包含 Processes 的脚本模块创建 .exe 文件时,也发生了一些奇怪的事情:它在启动此类定义的进程时重新启动了所有程序
为什么会这样?
编辑1:
我使用pyinstaller
我在这里编写的脚本创建了一个 .exe 文件,并且程序似乎崩溃了;LOGO
只是一遍又一遍地打印 hte变量不知道为什么
这是一个pyinstaller
错误还是这里发生了什么?
解决方案
推荐阅读
- python - Python——同时遍历两个列表
- javascript - 如何在亚马逊上获取商品的价格?
- javascript - Javasript websocket.send 发送 [Object object]
- filter - 在 Tableau 中不使用索引就过滤掉嵌套的子行?
- azure - 无法连接到 Azure Linux 虚拟机
- firefox - cypress iframe 功能适用于 chrome 但不适用于 firefox
- react-native - 无法在redux中将Auth令牌传递给reducer
- node.js - 无法在 ec2 Ubuntu MERN 堆栈中部署
- c# - 使用 C# indexOf() 方法,它不起作用
- reactjs - 每次渲染都会调用 React.cloneElement()