实现如下需求: 创建一个子进程,以及一个全局变量。子进程修改全局变量,然后每隔 1 秒打印全局变量的值和当前进程的 PID,执行 10 次后退出;主进程等待子进程运行完成,最后打印出全局变量的值和当前进程的 PID。
时间: 2024-02-09 12:09:38 浏览: 157
可以使用 `multiprocessing` 模块来实现这个需求,代码如下:
```python
import multiprocessing
import os
import time
global_var = 0
def child_process():
global global_var
for i in range(10):
global_var += 1
print(f"global_var={global_var}, PID={os.getpid()}")
time.sleep(1)
if __name__ == "__main__":
p = multiprocessing.Process(target=child_process)
p.start()
p.join()
print(f"Final global_var={global_var}, PID={os.getpid()}")
```
在这个程序中,我们定义了一个全局变量 `global_var`,然后创建了一个子进程 `p`,子进程执行函数 `child_process`。在 `child_process` 中,我们使用全局变量 `global_var`,每隔 1 秒修改它的值,并输出当前的值和进程的 PID。执行 10 次后退出。
在主进程中,我们首先启动子进程 `p`,然后调用 `join` 方法等待子进程执行完毕。在子进程执行完毕后,我们输出最终的全局变量值和进程的 PID。
需要注意的是,在 Windows 系统中,`multiprocessing` 模块在 `if __name__ == "__main__":` 语句块中执行子进程,因此我们需要将子进程的代码放在这个语句块中。在 Linux 等系统中,这个限制不适用。
阅读全文