PyInstaller用shared_memory重新启动了自己的文件

问题描述

我使用多处理中的shared_memory制作了python脚本。

在解释器中,一切正常。但是Sub Type1_Data() Dim ie As InternetExplorer Dim html As MSHTML.HTMLDocument Dim RowNumber,ColumnNumber As Long RowNumber = 3 ColumnNumber = 0 Dim i As Long Dim HTMLDoc As MSHTML.HTMLDocument Dim Filt As MSHTML.IHTMLElement Dim mtbl As MSHTML.IHTMLElement Dim strempid As MSHTML.HTMLElementCollection Dim strempid1 As MSHTML.HTMLElementCollection Dim strempid2 As MSHTML.HTMLElementCollection Dim strempid3 As MSHTML.HTMLElementCollection Dim strempid4 As MSHTML.HTMLElementCollection Dim strempid5 As MSHTML.HTMLElementCollection Dim strempid6 As MSHTML.HTMLElementCollection Set ie = New InternetExplorer ie.Visible = False ie.navigate ("URL") do while ie.READYSTATE = 4: DoEvents: Loop Do Until ie.READYSTATE = 4: DoEvents: Loop Set HTMLDoc = ie.document xy: If HTMLDoc.Title <> "Marketplace | Find a professional" Then ie.Visible = True GoTo xy End If ie.Visible = True ThisWorkbook.Activate Dim Ed As Integer Ed = 3 While ThisWorkbook.Sheets("ProM Search").Cells(Ed,1).Value <> 0 Ed = Ed + 1 Wend Ed = Ed - 1 For i = 3 To Ed Application.ScreenUpdating = True Set UID = HTMLDoc.getElementById("navSelect") Set Filt = HTMLDoc.getElementById("searchText") Set mtbl = HTMLDoc.getElementsByTagName("Table")(23) Application.Wait DateAdd("s",1,Now) HTMLDoc.getElementById("NLQTextArea").Value = ThisWorkbook.Sheets("ProM Search").Cells(i,1).Value HTMLDoc.getElementById("submitaction").Click Set strempid = mtbl.getElementsByClassName("dojoxGridCell")(1) Set strempid1 = mtbl.getElementsByClassName("dojoxGridCell")(2) Set strempid2 = mtbl.getElementsByClassName("dojoxGridCell")(3) Set strempid3 = mtbl.getElementsByClassName("dojoxGridCell")(7) Set strempid4 = mtbl.getElementsByClassName("dojoxGridCell")(9) Set strempid5 = mtbl.getElementsByClassName("dojoxGridCell")(11) Set strempid6 = mtbl.getElementsByClassName("dojoxGridCell")(12) ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid.innerText ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid1.innerText ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid2.innerText ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid3.innerText ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid4.innerText ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid5.innerText ActiveCell.Offset(0,1).Activate ActiveCell.Value = strempid6.innerText ActiveCell.Offset(1,-7).Activate DoEvents If ActiveCell.Value = "" Then MsgBox "Fetching Completed Successfully",vbExclamation,"ProM - Open Seat Search T2" GoTo qt End If Next qt: ie.Quit Set ie = nothing Set HTMLDoc = nothing End Sub 之后,即使键盘中断,它也会无限重启。

这是test_proc.py:

pyinstaller --onefile test_proc.py

输出将为

from multiprocessing import shared_memory

if __name__=="__main__":
    n_bytes = 4
    shm_name = 'SHMEM'
    shm1 = shared_memory.SharedMemory(name=shm_name,create=True,size=n_bytes)
    print(shm1.name)
    shm1.close()
    shm1.unlink()
    print('end')

仅当使用此shared_memory时,才会出现问题。

OS Ubuntu 18.04,python 3.8

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)