You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
#!/usr/local/bin/python3.sh
|
|
# -*-mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*
|
|
|
|
import sys
|
|
import os
|
|
import traceback
|
|
|
|
from phantompy import Render
|
|
|
|
global LOG
|
|
import logging
|
|
import warnings
|
|
warnings.filterwarnings('ignore')
|
|
LOG = logging.getLogger()
|
|
|
|
import sys
|
|
import asyncio
|
|
import time
|
|
|
|
from PyQt5.QtWidgets import QApplication, QProgressBar
|
|
from quamash import QEventLoop, QThreadExecutor
|
|
|
|
app = QApplication(sys.argv)
|
|
loop = QEventLoop(app)
|
|
asyncio.set_event_loop(loop) # NEW must set the event loop
|
|
asyncio.events._set_running_loop(loop)
|
|
|
|
progress = QProgressBar()
|
|
progress.setRange(0, 99)
|
|
progress.show()
|
|
|
|
async def master():
|
|
await first_50()
|
|
with QThreadExecutor(1) as executor:
|
|
await loop.run_in_executor(exec, last_50)
|
|
# TODO announce completion?
|
|
|
|
async def first_50():
|
|
for i in range(50):
|
|
progress.setValue(i)
|
|
await asyncio.sleep(.1)
|
|
|
|
def last_50():
|
|
for i in range(50,100):
|
|
loop.call_soon_threadsafe(progress.setValue, i)
|
|
time.sleep(.1)
|
|
|
|
with loop: ## context manager calls .close() when loop completes, and releases all resources
|
|
loop.run_until_complete(master())
|