Ik snap OOP in Javascript niet helemaal geloof ik. Of ik zie iets over het hoofd. In ieder geval werkt dit wel:
Quote:
<script>
var dx = 850;
var x = 0;
var y = 450;
function init() {
b = document.getElementById("box1");
moveIt();
}
window.requestAnimFrame = (function() {
return window.requestAnimationFrame OR
window.webkitRequestAnimationFrame OR
window.mozRequestAnimationFrame OR
window.oRequestAnimationFrame OR
window.msRequestAnimationFrame OR
function (/* function */ callback, /* DOMElement */ element)
{
window.setTimeout(callback, 1000 / 60);
};
})();
function init() {
b = document.getElementById("box1");
moveIt(b, 0, 850, 0, 450);
}
window.requestAnimFrame = (function() {
return window.requestAnimationFrame OR
window.webkitRequestAnimationFrame OR
window.mozRequestAnimationFrame OR
window.oRequestAnimationFrame OR
window.msRequestAnimationFrame OR
function (/* function */ callback, /* DOMElement */ element)
{
window.setTimeout(callback, 1000 / 60);
};
})();
function moveIt(theobject, x, endx, y, endy) {
x += (endx - x) * 0.15;
y += (endy - y) * 0.15;
theobject.style.left = x + "px";
theobject.style.top = y + "px";
requestAnimFrame(moveIt(theobject, x, endx, y, endy), b);
Heb lijkt ook alsof mijn browser veel meer moeite heeft met de tweede code. Want het laden duurt iets langer, en het object komt wel op de juiste coördinaten terecht. Maar ik zie de animatie alleen niet.
(Heb OR even neergezet voor dubbel |, want TaZrum maakt dan lange verticale lijnen, merkte ik. )
Stel: Ik maak dynamisch content aan en plaats dat in drie kolommen naast elkaar. Dus bij elk derde item gebruik ik HTML om een nieuwe regel te beginnen. Dit lukt mij allemaal wel. Maar soms kan het voorkomen dat de content niet precies per drie is, maar dat er op de laatste regel 2 items staan. Ik wil dan graag iets doen dat laatste item wat in de tweede kolom staat. Maar wat is een manier om die te vinden? Ik ben nu bezig met HTML en Craft/Twig, ik weet niet of iemand hier daar ervaring mee heeft. Daarom stel ik de vraag zonder specifieke programmeertaal. Ik denk ook dat het per taal niet zo veel zal verschillen hoe je zoiets als dit moet benaderen...
Weet iemand dit?
(Ondertussen ga ik zelf ook nog dingen proberen)
Als je weet hoeveel items er in totaal zijn, kan je normaliter met de % (modulus) operator uitvinden of het aantal mooi een drietal is. En zo niet, hoeveel elementen er dan nog op de laatste regel overblijven.
Ik heb hier een vrij simpel stukje Python. Het passed wat variabelen naar Neuron (software om neuronen mee te modelleren) en roept dan via Neuron het simulatiescript (geschreven in hoc) aan. Dat script genereert zijn eigen outputfiles, dus Python hoeft geen info meer van de processen te ontvangen.
Ik krijg het alleen voor geen meter parallelized. Wat er nu gebeurt is dat er telkens één core 100% actief wordt, die voert een complete simulatie uit, en dan start er een willekeurige andere core met de volgende simulatie. Ik vermoed dat al mijn Python workers gewoon dezelfde sessie van Neuron aanroepen en dat het daarom serieel wordt uitgevoerd. Enig idee hoe ik dit kan oplossen? Ik kan wel Neuron meerdere keren starten vanuit verschillende terminals, dus het is in theorie mogelijk om meerdere sessies te draaien. Ik heb al wat dingen geprobeerd met subprocess.Popen en subprocess.call maar dat levert niet echt iets op.
Thanks in advance!
import numpy
from neuron import h
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(6) #set pool size
varlist = []
for dend in range(100, 1500, 150):
for input in range(1, 11, 1):
varlist.append([dend, float("{0:.2f}".format(numpy.divide(input, float(100))))]) #making this a single list so it gets properly divided over CPUs
Ziet er logisch uit. Het enige dat ik me kan bedenken is dat "dend" ziet dat er al een instance draait, en die inderdaadl wil hergebruiken. Misschien is er een command-line argument o.i.d. om meerdere instances te maken.
ThreadPool map_async lijkt me voldoende, ik denk niet dat je zelf met threads en subprocesses hoeft te fiddlen.
[add]
Wacht, dat maakt geen sense, want "dend" is een variabele, geen programmanaam.
Ahh, thanks! Ik ga eens wat meer lezen over de global interpreter lock.
[add] Maar het vinden van een command om meerdere instances te maken zou eigenlijk ideaal zijn. Ik heb gisteren de hele dag bughunted om er vervolgens achter te komen dat Neuron niet het hele netwerk opnieuw initialized tenzij het in een nieuwe instance draait, dus zelfs zonder parallelization zal ik uiteindelijk iets met meerdere instances moeten doen. In elk geval goed om te weten dat er niet iets belachelijk mis is met mijn code, en in welke richting ik het ongeveer moet zoeken.