wxw520xj 2019-01-09 16:10 采纳率: 0%
浏览 16029

PyCharm-执行程序PermissionError: [WinError 5] 拒绝访问。

学习廖雪峰的python教程-多进程一章时,在PyCharm中执行进程间通信的示例代码,结果无法得到正确的结果。代码如下:

# 进程间通信

# 写数据进程执行的代码:
def write(q):
    print('Process to write: %s' % os.getpid())
    for value in ['A', 'B', 'C']:
        print('Put %s to queue...' % value)
        q.put(value)
        time.sleep(random.random())

# 读数据进程执行的代码:
def read(q):
    print('Process to read: %s' % os.getpid())
    while True:
        value = q.get(True)
        print('Get %s from queue.' % value)

if __name__=='__main__':
    # 父进程创建Queue,并传给各个子进程:
    q = Queue()
    pw = Process(target=write, args=(q,))
    pr = Process(target=read, args=(q,))
    # 启动子进程pw,写入:
    pw.start()
    # 启动子进程pr,读取:
    pr.start()
    # 等待pw结束:
    pw.join()
    # pr进程里是死循环,无法等待其结束,只能强行终止:
    pr.terminate()

我的PyCharm中执行结果如下:

G:\PycharmProjects\practice\venv\Scripts\python.exe G:/PycharmProjects/practice/process_and_thread.py
Process to write: 9048
Put A to queue...
Process Process-1:
Traceback (most recent call last):
  File "C:\Users\Xujian\AppData\Local\Programs\Python\Python37\lib\multiprocessing\process.py", line 297, in _bootstrap
    self.run()
  File "C:\Users\Xujian\AppData\Local\Programs\Python\Python37\lib\multiprocessing\process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "G:\PycharmProjects\practice\process_and_thread.py", line 77, in write
    q.put(value)
  File "C:\Users\Xujian\AppData\Local\Programs\Python\Python37\lib\multiprocessing\queues.py", line 82, in put
    if not self._sem.acquire(block, timeout):
PermissionError: [WinError 5] 拒绝访问。

Process finished with exit code 0

而直接在cmd中,使用python命令执行该py文件可以得到正确的结果。

求助问题在哪?
已经尝试重新安装、以管理员运行PyCharm,都无法解决

  • 写回答

2条回答 默认 最新

  • budhydg 2019-06-16 11:15
    关注

    导入Manager
    from multiprocessing import Process,Manager

    将q = Queue() 改为 q = Manager().Queue()

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮